﻿
namespace FastFood.DataAccess
{
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.Common;
    using Microsoft.Practices.EnterpriseLibrary.Data;
    using EDOSwit.Entity;
    using FastFood.Business.Entities;
    using FastFood.Business.Entities.Tipos;

    public class PreparablesData : Singleton<PreparablesData>
    {
        #region Attributes

        private readonly Database BaseDatos = DatabaseFactory.CreateDatabase();

        #endregion

        #region Methods

        public IList<Preparable> ListarByNombre(string nombre)
        {
            var entidades = new List<Preparable>();
            var comando = BaseDatos.GetStoredProcCommand("SelectPreparablesByNombre");

            BaseDatos.AddInParameter(comando, "nombre", DbType.String, nombre);

            using (var lector = BaseDatos.ExecuteReader(comando))
            {
                while (lector.Read())
                {
                    entidades.Add(new Preparable
                    {
                        preparableID = lector.IsDBNull(lector.GetOrdinal("preparableID")) ? default(short) : lector.GetInt16(lector.GetOrdinal("preparableID")),
                        nombre = lector.IsDBNull(lector.GetOrdinal("nombre")) ? default(string) : lector.GetString(lector.GetOrdinal("nombre")),
                        costo = lector.IsDBNull(lector.GetOrdinal("costo")) ? default(decimal) : lector.GetDecimal(lector.GetOrdinal("costo")),
                        precio = lector.IsDBNull(lector.GetOrdinal("precio")) ? default(decimal) : lector.GetDecimal(lector.GetOrdinal("precio")),
                        descripcion = lector.IsDBNull(lector.GetOrdinal("descripcion")) ? default(string) : lector.GetString(lector.GetOrdinal("descripcion")),
                        tipo = (TipoPreparable)(lector.GetInt32(lector.GetOrdinal("tipo")))
                    });
                }
            }
            comando.Dispose();
            return entidades;
        }

        #endregion
    }
}
